/**
 * Created by lwy on 2017/8/1.
 */


var userId = localStorage.getItem('crmUserId');
var roleId = localStorage.getItem('crmRoleId');
var treeId = localStorage.getItem('crmTree');

$(function(){
    if(treeId==""||treeId==undefined||treeId==null){
        if(userId==""||userId==undefined||userId==null){
            doRoleTree();
        }else{
            doUserTree();
        }
    }else{
        doTree();
        $('#save3').hide();
    }
})


//资源管理树
function doTree(){
    $.ajax({
        url:'/crm/systemPrivilegeC/getPrivilegeTree.json',
        dataType:'json',
        data:{
            token:localStorage.getItem('crmtoken'),
        },
        type:'post',
        success:function(data){
            $('#loading').hide();
            if(data.code==1){
                for(var k=0;k<data.urlList.length;k++){
                    $('<li style="margin-bottom: 15px;">'+data.urlList[k].cnName+'</li>').appendTo($('#url'));
                }

                for(var a=0;a<data.superMenuList.length;a++){

                    $('<li class="jstree-open" id="oneTree'+data.superMenuList[a].superId+'">'+data.superMenuList[a].superCnName+'</li>').appendTo($('#treeBox'));
                    $('<ul id="oneUl'+data.superMenuList[a].superId+'">').appendTo($('#oneTree'+data.superMenuList[a].superId+''))

                    for(var b=0;b<data.superMenuList[a].menuList.length;b++){
                        $('<li class="jstree-open" id="twoTree'+data.superMenuList[a].menuList[b].MenuId+'">'+data.superMenuList[a].menuList[b].MenuCnName+'</li>').appendTo($('#oneUl'+data.superMenuList[a].superId+''))
                        $('<ul id="twoUl'+data.superMenuList[a].menuList[b].MenuId+'">').appendTo($('#twoTree'+data.superMenuList[a].menuList[b].MenuId+''))

                        for(var c=0;c<data.superMenuList[a].menuList[b].buttonList.length;c++){
                            $('<li class="jstree-open">'+data.superMenuList[a].menuList[b].buttonList[c].buttonCnName+'</li>').appendTo($('#twoUl'+data.superMenuList[a].menuList[b].MenuId+''))
                        }
                        $('</ul>').appendTo($('#twoTree'+data.superMenuList[a].menuList[b].MenuId+''));

                    }
                    $('</ul>').appendTo($('#oneTree'+data.superMenuList[a].superId+''))
                }


                $('#jstree1').jstree({
                    'core': {
                        'check_callback': true
                    },
                    'plugins': ['types', 'dnd'],
                    'types': {
                        'default': {
                            'icon': 'fa fa-folder'
                        },
                        'html': {
                            'icon': 'fa fa-file-code-o'
                        },
                        'svg': {
                            'icon': 'fa fa-file-picture-o'
                        },
                        'css': {
                            'icon': 'fa fa-file-code-o'
                        },
                        'img': {
                            'icon': 'fa fa-file-image-o'
                        },
                        'js': {
                            'icon': 'fa fa-file-text-o'
                        }

                    }
                });
            }
        }
    })
}

//用户权限树
function doUserTree(){
    $.ajax({
        url:'/crm/userRolePrivilegeC/getByUserPrivilege.json',
        dataType:'json',
        data:{
            token:localStorage.getItem('crmtoken'),
            userId:userId,
        },
        type:'post',
        success:function(data){
            if(data.code==1){
                $('#loading').hide();
                $('#user').html('用户名：'+data.userAccount+'\&nbsp;\&nbsp;\&nbsp;\&nbsp;'+'真实姓名：'+data.userName);
                for(var a=0;a<data.superMenuList.length;a++){
                    var isRoleValid = data.superMenuList[a].isRoleValid;
                    var isUserValid = data.superMenuList[a].isUserValid;
                    var ifClick = '';
                    var ifCheck = '';
                    var imgChecked = '';
                    if(isRoleValid){
                        ifClick = 'pointer-events:none;color:#f00;';
                    }else{
                        ifClick = '';
                    }
                    if(isUserValid){
                        ifCheck = '../static/img/checked.jpg';
                        imgChecked = 'true';
                    }else{
                        if(isRoleValid){
                            ifCheck = '../static/img/nochecked_h.jpg';
                            imgChecked = 'false';
                        }else{
                            ifCheck = '../static/img/nochecked.jpg';
                            imgChecked = 'false';
                        }
                    }

                    $('<li class="jstree-open treeLi" id="oneTree'+data.superMenuList[a].superId+'" checkId="'+data.superMenuList[a].superId+'"><img class="checkImg" src="'+ifCheck+'" id="'+data.superMenuList[a].superId+'" ifchecked="'+imgChecked+'"><span style="'+ifClick+'">'+data.superMenuList[a].superCnName+'</span></li>').appendTo($('#treeBox'));
                    $('<ul id="oneUl'+data.superMenuList[a].superId+'">').appendTo($('#oneTree'+data.superMenuList[a].superId+''))

                    for(var b=0;b<data.superMenuList[a].menuList.length;b++){
                        var isRoleValid2 = data.superMenuList[a].menuList[b].isRoleValid;
                        var isUserValid2 = data.superMenuList[a].menuList[b].isUserValid;
                        var ifClick2 = '';
                        var ifCheck2 = '';
                        var imgChecked2 = '';
                        if(isRoleValid2){
                            ifClick2 = 'pointer-events:none;color:#f00;';
                            ifCheck2 = '../static/img/nochecked_h.jpg'
                        }else{
                            ifClick2 = '';
                        }
                        if(isUserValid2){
                            ifCheck2 = '../static/img/checked.jpg';
                            imgChecked2 = 'true';
                        }else{
                            if(isRoleValid2){
                                ifCheck2 = '../static/img/nochecked_h.jpg';
                                imgChecked2 = 'false';
                            }else{
                                ifCheck2 = '../static/img/nochecked.jpg';
                                imgChecked2 = 'false';
                            }
                        }
                        $('<li class="jstree-open treeLi" id="twoTree'+data.superMenuList[a].menuList[b].MenuId+'" checkId="'+data.superMenuList[a].menuList[b].MenuId+'"><img class="checkImg" id="'+data.superMenuList[a].menuList[b].MenuId+'" src="'+ifCheck2+'" alt="" ifchecked="'+imgChecked2+'"><span style="'+ifClick2+'">'+data.superMenuList[a].menuList[b].MenuCnName+'</span></li>').appendTo($('#oneUl'+data.superMenuList[a].superId+''))
                        $('<ul id="twoUl'+data.superMenuList[a].menuList[b].MenuId+'">').appendTo($('#twoTree'+data.superMenuList[a].menuList[b].MenuId+''))

                        for(var c=0;c<data.superMenuList[a].menuList[b].buttonList.length;c++){
                            var isRoleValid3 = data.superMenuList[a].menuList[b].buttonList[c].isRoleValid;
                            var isUserValid3 = data.superMenuList[a].menuList[b].buttonList[c].isUserValid;
                            var ifClick3 = '';
                            var ifCheck3 = '';
                            var imgChecked3 = '';
                            if(isRoleValid3){
                                ifClick3 = 'pointer-events:none;color:#f00;';
                                ifCheck3 = '../static/img/nochecked_h.jpg';
                            }else{
                                ifClick3 = '';
                            }
                            if(isUserValid3){
                                ifCheck3 = '../static/img/checked.jpg';
                                imgChecked3 = 'true';
                            }else{
                                if(isRoleValid3){
                                    ifCheck3 = '../static/img/nochecked_h.jpg';
                                    imgChecked3 = 'false';
                                }else{
                                    ifCheck3 = '../static/img/nochecked.jpg';
                                    imgChecked3 = 'false';
                                }
                            }
                            $('<li class="jstree-open treeLi" checkId="'+data.superMenuList[a].menuList[b].buttonList[c].buttonId+'"><img class="checkImg" src="'+ifCheck3+'" ifchecked="'+imgChecked3+'" id="'+data.superMenuList[a].menuList[b].buttonList[c].buttonId+'"><span style="'+ifClick3+'">'+data.superMenuList[a].menuList[b].buttonList[c].buttonCnName+'</span></li>').appendTo($('#twoUl'+data.superMenuList[a].menuList[b].MenuId+''))
                        }
                        $('</ul>').appendTo($('#twoTree'+data.superMenuList[a].menuList[b].MenuId+''));

                    }
                    $('</ul>').appendTo($('#oneTree'+data.superMenuList[a].superId+''))
                }


                $('#jstree1').jstree({
                    'core': {
                        'check_callback': true
                    },
                    'plugins': ['types', 'dnd'],
                    'types': {
                        'default': {
                            'icon': 'fa fa-folder'
                        },
                        'html': {
                            'icon': 'fa fa-file-code-o'
                        },
                        'svg': {
                            'icon': 'fa fa-file-picture-o'
                        },
                        'css': {
                            'icon': 'fa fa-file-code-o'
                        },
                        'img': {
                            'icon': 'fa fa-file-image-o'
                        },
                        'js': {
                            'icon': 'fa fa-file-text-o'
                        }

                    }
                });

                //树节点点击将当前节点里的img src更换
                $('.treeLi').unbind("click").bind("click", function(e) {
                    e.stopPropagation();
                    e.preventDefault();
                    var checkId = $(this).attr('checkId');//当前li checkId
                    //获取与li checkId相同的img id，也就是获取当前li下面对应的唯一img子元素
                    if($(this).find('a').children('img[id='+checkId+']').attr('src')=='../static/img/checked.jpg'){
                        $(this).find('a').children('img[id='+checkId+']').attr('src','../static/img/nochecked.jpg');
                        $(this).find('a').children('img[id='+checkId+']').attr('ifChecked','false')
                    }else{
                        if($(this).find('a').children('img[id='+checkId+']').attr('src')=='../static/img/nochecked_h.jpg'){
                            $(this).find('a').children('img[id='+checkId+']').attr('ifChecked','false')
                        }else{
                            $(this).find('a').children('img[id='+checkId+']').attr('src','../static/img/checked.jpg');
                            $(this).find('a').children('img[id='+checkId+']').attr('ifChecked','true');
                        }
                    }
                });


                //点击保存
                $('#save3').unbind('click').bind('click',function(){
                    var allId = '';
                    $('img[ifChecked=true]').each(function(){
                        //console.log($(this).attr('id'));
                        allId+=$(this).attr('id')+','
                    });
                    $.ajax({
                        url:'/crm/userRolePrivilegeC/userAddPermission.json',
                        dataType:'json',
                        data:{
                            token:localStorage.getItem('crmtoken'),
                            userId:userId,
                            permissionIds:allId,
                        },
                        type:'post',
                        success:function(data){
                            if(data.code==1){
                                alert('添加成功');
                            }
                        }
                    })
                })
            }
        }
    })
}

//角色权限树
function doRoleTree(){
    $.ajax({
        url:'/crm/userRolePrivilegeC/getByRolePrivilege.json',
        dataType:'json',
        data:{
            token:localStorage.getItem('crmtoken'),
            roleId:roleId,
        },
        type:'post',
        success:function(data){
            if(data.code==1){
                $('#loading').hide();
                $('#user').html('角色：'+data.role);
                for(var a=0;a<data.superMenuList.length;a++){
                    var isRoleValid = data.superMenuList[a].isRoleValid;
                    var ifClick = '';
                    var ifCheck = '';
                    var imgChecked = '';
                    if(isRoleValid){
                        ifCheck = '../static/img/checked.jpg';
                        imgChecked = 'true';
                    }else{
                        ifCheck = '../static/img/nochecked.jpg';
                        imgChecked = 'false';
                    }

                    $('<li class="jstree-open treeLi" id="oneTree'+data.superMenuList[a].superId+'" checkId="'+data.superMenuList[a].superId+'"><img class="checkImg" src="'+ifCheck+'" id="'+data.superMenuList[a].superId+'" ifchecked="'+imgChecked+'"><span style="'+ifClick+'">'+data.superMenuList[a].superCnName+'</span></li>').appendTo($('#treeBox'));
                    $('<ul id="oneUl'+data.superMenuList[a].superId+'">').appendTo($('#oneTree'+data.superMenuList[a].superId+''))

                    for(var b=0;b<data.superMenuList[a].menuList.length;b++){
                        var isRoleValid2 = data.superMenuList[a].menuList[b].isRoleValid;
                        var ifClick2 = '';
                        var ifCheck2 = '';
                        var imgChecked2 = '';
                        if(isRoleValid2){
                            ifCheck2 = '../static/img/checked.jpg';
                            imgChecked2 = 'true';
                        }else{
                            ifCheck2 = '../static/img/nochecked.jpg';
                            imgChecked2 = 'false';
                        }
                        $('<li class="jstree-open treeLi" id="twoTree'+data.superMenuList[a].menuList[b].MenuId+'" checkId="'+data.superMenuList[a].menuList[b].MenuId+'"><img class="checkImg" id="'+data.superMenuList[a].menuList[b].MenuId+'" src="'+ifCheck2+'" alt="" ifchecked="'+imgChecked2+'"><span style="'+ifClick2+'">'+data.superMenuList[a].menuList[b].MenuCnName+'</span></li>').appendTo($('#oneUl'+data.superMenuList[a].superId+''))
                        $('<ul id="twoUl'+data.superMenuList[a].menuList[b].MenuId+'">').appendTo($('#twoTree'+data.superMenuList[a].menuList[b].MenuId+''))

                        for(var c=0;c<data.superMenuList[a].menuList[b].buttonList.length;c++){
                            var isRoleValid3 = data.superMenuList[a].menuList[b].buttonList[c].isRoleValid;
                            var ifClick3 = '';
                            var ifCheck3 = '';
                            var imgChecked3 = '';
                            if(isRoleValid3){
                                ifCheck3 = '../static/img/checked.jpg';
                                imgChecked3 = 'true';
                            }else{
                                ifCheck3 = '../static/img/nochecked.jpg';
                                imgChecked3 = 'false';
                            }
                            $('<li class="jstree-open treeLi" checkId="'+data.superMenuList[a].menuList[b].buttonList[c].buttonId+'"><img class="checkImg" src="'+ifCheck3+'" ifchecked="'+imgChecked3+'" id="'+data.superMenuList[a].menuList[b].buttonList[c].buttonId+'"><span style="'+ifClick3+'">'+data.superMenuList[a].menuList[b].buttonList[c].buttonCnName+'</span></li>').appendTo($('#twoUl'+data.superMenuList[a].menuList[b].MenuId+''))
                        }
                        $('</ul>').appendTo($('#twoTree'+data.superMenuList[a].menuList[b].MenuId+''));

                    }
                    $('</ul>').appendTo($('#oneTree'+data.superMenuList[a].superId+''))
                }


                $('#jstree1').jstree({
                    'core': {
                        'check_callback': true
                    },
                    'plugins': ['types', 'dnd'],
                    'types': {
                        'default': {
                            'icon': 'fa fa-folder'
                        },
                        'html': {
                            'icon': 'fa fa-file-code-o'
                        },
                        'svg': {
                            'icon': 'fa fa-file-picture-o'
                        },
                        'css': {
                            'icon': 'fa fa-file-code-o'
                        },
                        'img': {
                            'icon': 'fa fa-file-image-o'
                        },
                        'js': {
                            'icon': 'fa fa-file-text-o'
                        }

                    }
                });

                //树节点点击将当前节点里的img src更换
                $('li').unbind('dbclick');
                $('.treeLi').unbind("click").bind("click", function(e) {
                    e.stopPropagation();
                    e.preventDefault();
                    var checkId = $(this).attr('checkId');//当前li checkId
                    //获取与li checkId相同的img id，也就是获取当前li下面对应的唯一img子元素
                    if($(this).find('a').children('img[id='+checkId+']').attr('src')=='../static/img/checked.jpg'){
                        $(this).find('a').children('img[id='+checkId+']').attr('src','../static/img/nochecked.jpg');
                        $(this).find('a').children('img[id='+checkId+']').attr('ifChecked','false')
                        //如果当前只有一个li，将当前变为未选中状态后，将父元素也取消选中
                            if($(this).siblings().length==0){
                                $(this).parent().siblings('a').children('img').attr('src','../static/img/nochecked.jpg');
                                $(this).parent().siblings('a').children('img').attr('ifChecked','false');
                            }else{
                                //如果有多个，需要判断子元素全部变为未选中状态之后，将父元素也取消选中
                                //console.log($(this).siblings().find('img').attr('src','../static/img/checked.jpg').length);
                            }
                    }else{
                        //如果当前未选中时，将当前子元素img变为选中状态，
                            $(this).find('a').children('img[id='+checkId+']').attr('src','../static/img/checked.jpg');
                            //并且将父元素img变为选中状态
                            $(this).parent().siblings().children('img').attr('src','../static/img/checked.jpg');
                            $(this).find('a').children('img[id='+checkId+']').attr('ifChecked','true');
                            $(this).parent().siblings().children('img').attr('ifChecked','true');
                    }
                });

                //点击保存
                $('#save3').unbind('click').bind('click',function(){
                    var allId = '';
                    $('img[ifChecked=true]').each(function(){
                        //console.log($(this).attr('id'));
                        allId+=$(this).attr('id')+','
                    });
                    $.ajax({
                        url:'/crm/userRolePrivilegeC/roleAddPermission.json',
                        dataType:'json',
                        data:{
                            token:localStorage.getItem('crmtoken'),
                            roleId:roleId,
                            permissionIds:allId,
                        },
                        type:'post',
                        success:function(data){
                            if(data.code==1){
                                alert('添加成功');
                            }
                        }
                    })
                })
            }
        }
    })
}

$(document).ready(function(){
    $('li').unbind('dbclick');
})


